home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / HyperCard / PrintEnvelope XCMD / PrintEnvelope.p next >
Text File  |  1992-06-05  |  2KB  |  90 lines

  1. unit upw;
  2.  
  3. interface
  4.  
  5.     uses
  6.         Printing, HyperXCmd;
  7.  
  8.     procedure main (paramPtr: XCmdPtr);
  9.  
  10. implementation
  11.  
  12.     procedure main (paramPtr: XCmdPtr);
  13.  
  14.         var
  15.  
  16.             fn: Str255;
  17.             fte: TEHandle;
  18.             i: integer;
  19.             fp: PicHandle;
  20.             theEvent: EventRecord;
  21.             a, c, o: boolean;
  22.  
  23.             hPrint: THPrint;
  24.             pPrPort: TPPrPort;
  25.             prStatus: TPrStatus;
  26.             gp: GrafPtr;
  27.  
  28.     begin
  29.         GetPort(gp);
  30.  
  31.         hPrint := THPrint(Get1Resource('PREC', 2610));
  32.         a := hPrint = nil;
  33.         PrOpen;
  34.         if a then
  35.             begin
  36.                 hPrint := THPrint(NewHandle(sizeof(TPrint)));
  37.                 PrintDefault(hPrint);
  38.                 o := true
  39.             end
  40.         else
  41.             begin
  42.                 c := EventAvail(0, theEvent);
  43.                 c := PrValidate(hPrint) or (BitAnd(theEvent.modifiers, optionKey) <> 0);
  44.                 o := c
  45.             end;
  46.         if o then
  47.             if PrStlDialog(hPrint) then
  48.                 if PrJobDialog(hPrint) then
  49.                     o := false;
  50.  
  51.         if not o then
  52.             begin
  53.                 pPrPort := PrOpenDoc(hPrint, nil, nil);
  54.                 PrOpenPage(pPrPort, nil);
  55.                 SetPort(@pPrPort^.gPort);
  56.                 for i := 1 to paramPtr^.paramCount do
  57.                     begin
  58.                         ZeroToPas(paramPtr, Handle(paramPtr^.params[i])^, fn);
  59.                         fte := GetFieldTE(paramPtr, false, 0, 0, @fn);
  60.                         if fte <> nil then
  61.                             begin
  62.                                 fte^^.inPort := @pPrPort^.gPort;
  63.                                 TEUpdate(pPrPort^.gPort.portRect, fte);
  64.                                 fp := PicHandle(GetNamedResource('PICT', fn));
  65.                                 if fp <> nil then
  66.                                     begin
  67.                                         DrawPicture(fp, fte^^.viewRect);
  68.                                         ReleaseResource(Handle(fp))
  69.                                     end;
  70.                                 TEDispose(fte)
  71.                             end
  72.                     end;
  73.                 PrClosePage(pPrPort);
  74.                 PrCloseDoc(pPrPort);
  75.                 if (hPrint^^.prJob.bJDocLoop = bSpoolLoop) and (prError = noErr) then
  76.                     PrPicFile(hPrint, nil, nil, nil, prStatus)
  77.             end;
  78.  
  79.         PrClose;
  80.         if a then
  81.             if o then
  82.                 DisposHandle(Handle(hPrint))
  83.             else
  84.                 AddResource(Handle(hPrint), 'PREC', 2610, '')
  85.         else if c and not o then
  86.             ChangedResource(Handle(hPrint));
  87.  
  88.         SetPort(gp)
  89.     end;
  90. end.